import axios from 'axios';

// import NProgress from 'nprogress' // 引入nprogress插件
// import 'nprogress/nprogress.css'  // 这个nprogress样式必须引入

import { BASE_URL, TIMEOUT } from "./config";

const instance = axios.create({
  baseURL: BASE_URL,
  timeout: TIMEOUT
});
axios.defaults.headers['Content-Type'] = 'application/json';  //设置默认提交 json
axios.defaults.transformRequest = data => JSON.stringify(data);   //把数据对象序列化成 json字符串

instance.interceptors.request.use(config => {

  // NProgress.start() // 设置加载进度条(开始..)
  // 1.发送网络请求时, 在界面的中间位置显示Loading的组件

  // 2.某一些请求要求用户必须携带token, 如果没有携带, 那么直接跳转到登录页面

  // 3.params/data序列化的操作
  return config;
}, err => {

});

instance.interceptors.response.use(res => {
  // NProgress.done() // 设置加载进度条(结束..)
  return res.data;
}, err => {

  if (err && err.response) {
    switch (err.response.status) {
      case 400:
        console.log("请求错误");
        break;
      case 401:
        console.log("未授权访问");
        break;
      default:
        console.log("其他错误信息");
    }
  }
  return err;
});

export default instance;

